package FooBarBibliotheque;

import java.io.Serializable;
import java.util.GregorianCalendar;
import java.util.HashMap;

/* @authors vasquezs, haffafa, baldinof */
public class Periodique extends Document implements Serializable {

    private static final long serialVersionUID = 1L;
    private String ISSN, editeur;
    private Periodicite periodicite;
    private HashMap<String, Parution> parutions;

    public Periodique(String ISSN, String titre, String editeur, Periodicite periodicite) {
        //constructeur de la class Periodique
        super(titre);   //recuperation de l'attribut titre de la classe Document
        setISSN(ISSN);
        setEditeur(editeur);
        setPeriodicite(periodicite);
        parutions = new HashMap<String, Parution>(); //creation du Hashmap qui acceuillera les Parutions de ce Periodique
    }

    public String getISSN() {
        return ISSN;
    }

    public void setISSN(String ISSN) {
        this.ISSN = ISSN;
    }

    public String getEditeur() {
        return editeur;
    }

    public void setEditeur(String editeur) {
        this.editeur = editeur;
    }

    public HashMap<String, Parution> getParutions() {
        return parutions;
    }

    public void setParutions(HashMap<String, Parution> parutions) {
        this.parutions = parutions;
    }

    public Periodicite getPeriodicite() {
        return periodicite;
    }

    public void setPeriodicite(Periodicite periodicite) {
        this.periodicite = periodicite;
    }

    public Parution getParutionPeriodique(String numeroParution) {
        return parutions.get(numeroParution);
    }

    public Parution creerParution(String numeroParution, String titre, GregorianCalendar date) {
        Parution par = new Parution(numeroParution, titre, date, this);
        lierParution(par, numeroParution);
        return par;
    }

    private void lierParution(Parution par, String numeroParution) {
        parutions.put(numeroParution, par);
    }

    public Parution getParution(String numeroParution) {
        return uneParution(numeroParution);
    }

    private Parution uneParution(String numeroParution) {
        return parutions.get(numeroParution);
    }

    @Override
    public String infoDocument() {
        //redefinition de la methode infoDocument pour afficher les infos specifique au periodique
        String str = super.infoDocument() + "\nEditeur: " + editeur
                + "\nISSN: " + ISSN
                + "\nPériodicité: " + periodicite + "\n";
        return str;
    }

}
